{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from lib.envs import marketing\n",
    "from lib.envs import tiger\n",
    "from lib.envs import voicemail\n",
    "from lib.envs import machinerepair\n",
    "from lib.envs import cheezemaze\n",
    "from lib.envs import fourbyfourmaze\n",
    "import pyprind\n",
    "import pdb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def softmax_action(env,memory_state,observation,θ_action):\n",
    "    prob_list=np.exp(θ_action[memory_state,observation]) ##clipping the softmax function to prevent saturation\n",
    "    den=np.sum(prob_list)\n",
    "    prob=[prob_list[a]/den for a in range(θ_action.shape[2])]\n",
    "    prob=prob/np.sum(prob)\n",
    "    action_probs=prob.reshape(env.number_of_actions())\n",
    "    #print(action_probs)\n",
    "    action=np.random.multinomial(len(action_probs),action_probs).argmax()\n",
    "    return action,action_probs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def softmax_transition(env,num_states,observation,memory_state,γ_transition):\n",
    "    #import pdb;pdb.set_trace()\n",
    "    prob_list=np.exp(γ_transition[observation,memory_state])\n",
    "    den=np.sum(prob_list)\n",
    "    prob=[prob_list[a]/den for a in range(γ_transition.shape[2])]\n",
    "    prob=prob/np.sum(prob)\n",
    "    transition_prob=prob.reshape(num_states)\n",
    "    #print(\"Trainsition Prob\",transition_prob)\n",
    "    next_memory_state=np.random.multinomial(len(transition_prob),transition_prob).argmax()\n",
    "    return next_memory_state,transition_prob\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grad_log_boltzman_policy(memory_state,observation,action,θ):\n",
    "    res=np.zeros_like(θ)\n",
    "    den=np.sum(np.exp(θ[memory_state,observation]))\n",
    "    for j in range(θ.shape[2]):\n",
    "        res[memory_state,observation,j]=-np.exp(θ[memory_state,observation,j])/den\n",
    "    res[memory_state,observation,action]+=1.0\n",
    "    \n",
    "    return res\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grad_log_policy(env,memory_state,observation,action,θ):\n",
    "    res=np.zeros_like(θ)\n",
    "    left=1\n",
    "    _,probs=softmax_action(env,memory_state,observation,θ)\n",
    "    res[memory_state,observation,:]=left-probs\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grad_log_boltzman_transition(observation,memory_state,γ):\n",
    "    res=np.zeros_like(γ)\n",
    "    den=np.sum(np.exp(γ[observation,memory_state]))\n",
    "    for j in range(γ.shape[2]):\n",
    "        res[observation,memory_state,j]=-np.exp(γ[observation,memory_state,j])/den\n",
    "    res[observation,memory_state,memory_state]+=1.0\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grad_log_transition(env,observation,memory_state,num_states,γ):\n",
    "    res=np.zeros_like(γ)\n",
    "    left=1\n",
    "    _,probs=softmax_transition(env,num_states,observation,memory_state,γ)\n",
    "    \n",
    "    #pdb.set_trace()\n",
    "    res[observation,memory_state,:]=left-probs\n",
    "    \n",
    "    return res"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Implementation of Istate-GPOMDP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "env=tiger.TigerEnv()\n",
    "#env=voicemail.VoicemailEnv()\n",
    "#env=cheezemaze.CheeseMazeEnv()\n",
    "num_states = 9 ##defines the number of controller states\n",
    "# initial_observation_prob=np.array([0.5,0.5])\n",
    "# observation=np.random.multinomial(len(initial_observation_prob),initial_observation_prob).argmax()\n",
    "# memory_state=0\n",
    "# z_θ=0\n",
    "# z_ϕ=0\n",
    "# Δ_θ=0\n",
    "# Δ_ϕ=0\n",
    "# β=0.95 ##For the tiger environment"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "0% [##############################] 100% | ETA: 00:00:00\n",
      "Total time elapsed: 00:02:10\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Title: \n",
      "  Started: 05/27/2018 01:49:03\n",
      "  Finished: 05/27/2018 01:51:13\n",
      "  Total time elapsed: 00:02:10\n"
     ]
    }
   ],
   "source": [
    "iteration_reward=[]\n",
    "θ=np.zeros(shape=(num_states,env.number_of_observations(),env.number_of_actions()))\n",
    "γ=np.zeros(shape=(env.number_of_observations(), num_states,num_states))\n",
    "iterations=1000\n",
    "bar=pyprind.ProgBar(iterations)\n",
    "memory_state=0\n",
    "observation_probs=np.array([0.5,0.5])\n",
    "observation=np.random.multinomial(len(observation_probs),observation_probs).argmax()\n",
    "reward=0\n",
    "for i in range(iterations):\n",
    "    bar.update()\n",
    "    \n",
    "    z_θ=0\n",
    "    z_ϕ=0\n",
    "    Δ_θ=0\n",
    "    Δ_ϕ=0\n",
    "    β=0.95\n",
    "    α=0.05\n",
    "    #memory_state=0\n",
    "    T=1000\n",
    "    t=0\n",
    "    #action=0\n",
    "    #observation,reward,_=env.step(action)\n",
    "    cum_rewards=0\n",
    "    scale=1.0\n",
    "    while t<T:\n",
    "        \n",
    "        next_memory_state,_=softmax_transition(env,num_states,observation,memory_state,γ)\n",
    "\n",
    "        action,_=softmax_action(env,next_memory_state,observation,θ)\n",
    "\n",
    "        z_ϕ=β*z_ϕ+grad_log_boltzman_transition(observation,memory_state,γ)\n",
    "\n",
    "        z_θ=β*z_θ+grad_log_boltzman_policy(next_memory_state,observation,action,θ)\n",
    "\n",
    "        ##alternative way\n",
    "        #z_ϕ=β*z_ϕ+grad_log_transition(env,observation,memory_state,num_states,γ)\n",
    "\n",
    "        #z_θ=β*z_θ+grad_log_policy(env,memory_state,observation,action,θ)\n",
    "\n",
    "        \n",
    "        \n",
    "        Δ_θ=Δ_θ+(1/(t+1))*(reward*z_θ-Δ_θ)\n",
    "\n",
    "        Δ_ϕ=Δ_ϕ+(1/(t+1)) * (reward*z_ϕ-Δ_ϕ)\n",
    "        \n",
    "        observation,reward,_=env.step(action)\n",
    "        #print(\"Memory_State\",memory_state)\n",
    "        cum_rewards+=scale*reward\n",
    "        scale*=β\n",
    "        \n",
    "        memory_state = next_memory_state\n",
    "        \n",
    "        t+=1\n",
    "    iteration_reward.append(cum_rewards)\n",
    "    #print(\"Iterations :\",i)\n",
    "    \n",
    "    θ=θ+α*Δ_θ\n",
    "    γ=γ+α*Δ_ϕ   \n",
    "    θ=np.clip(θ,a_min=-30,a_max=30)\n",
    "    γ=np.clip(γ,a_min=-30,a_max=30)   \n",
    "print(bar)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x10f8aa470>]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(iteration_reward)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9, 2, 3)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "θ.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
